Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.

...powered by www.netzwerkartist.de...

 <<   zurück
Visual Basic 2005 von Andreas Kühnel
Das umfassende Handbuch
Buch: Visual Basic 2005

Visual Basic 2005
1.233 S., mit 2 CDs, 59,90 Euro
Galileo Computing
ISBN 3-89842-585-1
gp Kapitel 21 MDI-Anwendungen
  gp 21.1 Einführung
  gp 21.2 Das MDI-Hauptfenster
  gp 21.3 Die Subfenster
  gp 21.4 Zugriff auf die Subfenster
    gp 21.4.1 Zugriff auf alle Subfenster
    gp 21.4.2 Zugriff auf das aktive Subfenster
  gp 21.5 Das Menü in einer MDI-Anwendung
    gp 21.5.1 Subfenster anordnen
    gp 21.5.2 Subfenster mit eigenen Menüs
  gp 21.6 Symbol- und Statusleiste des Subfensters
  gp 21.7 Die Liste der geöffneten untergeordneten Fenster
  gp 21.8 Beispiel einer MDI-Anwendung


Galileo Computing

21.5 Das Menü in einer MDI-Anwendung  downtop

Bevor wir uns das Verhalten eines Menüs einer MDI-Anwendung ansehen und die Einflussnahme darauf, müssen ein paar Worte vorweg gesagt werden. Nach dem, was Sie in Kapitel 18 erfahren haben, sind Sie sicherlich dazu geneigt, die Positionierung und Anordnung von Menü-, Symbol- und Statusleiste einem ToolStripContainer anzuvertrauen. Vertrauen Sie diesem Steuerelement aber nicht zu viel. Denn sobald Sie diesen Container in den Arbeitsbereich eines MDI-Hauptfensters gelegt haben, verliert das Hauptfenster seine ihm typischen Eigenschaften hinsichtlich der Verwaltung und Anzeige der Subfenster. Das äußert sich dadurch, dass Subfenster gar nicht mehr sichtbar sind. Sie müssen demnach auf einen ToolStripContainer im MDI-Hauptfenster verzichten und können nicht von dessen Fähigkeiten profitieren.


Galileo Computing

21.5.1 Subfenster anordnen  downtop

Haben Sie im MDI-Hauptfenster mehrere Subfenster geöffnet, werden diese standardmäßig überlappend angezeigt. Das erste öffnet sich in der linken, oberen Ecke des Hauptfensters, jedes weitere um jeweils einen bestimmten Betrag nach rechts unten versetzt. Wollen Sie dem Benutzer die Möglichkeit geben, die Subfenster anders anzuordnen, haben Sie noch zwei andere Alternativen: entweder werden die Fenster nebeneinander oder untereinander angeordnet. Üblicherweise wird die Wahl über das Menü Fenster des Hauptfensters bereitgestellt (siehe Abbildung 21.2).

Abbildung
Hier klicken, um das Bild zu Vergrößern

Abbildung 21.2     Auswahlmenü zur Anordnung der MDI-Subfenster

Im Ereignishandler des Click-Ereignisses der Menüelemente wird dazu die Methode LayoutMdi des Hauptfensters aufgerufen:


Public Sub LayoutMdi(MdiLayout)

Der Übergabewert vom Typ MdiLayout kann vier verschiedene Werte aufweisen, welche die Anordnung der Subfenster beschreiben.


Tabelle 21.1     Mitglieder der Enumeration »MdiLayout«

Member Wert Beschreibung
Cascade 0 Die im MDI-Hauptfenster angezeigten Subfenster werden überlappend angeordnet.
TileHorizontal 1 Die im MDI-Hauptfenster angezeigten Subfenster werden horizontal angeordnet.
TileVertical 2 Die im MDI-Hauptfenster angezeigten Subfenster werden vertikal angeordnet.
ArrangeIcons 3 Alle iconisierten Subfenster werden am unteren Rand des Hauptfensters angeordnet.

Ein gemeinsamer Ereignishandler reicht aus, um alle Subfenster wunschgemäß anzuordnen. Sie prüfen dann in einer If-Anweisung den Parameter sender, um festzustellen, welches Menüelement den Aufruf des Handlers ausgelöst hat. Mit der gewonnenen Information weisen Sie den entsprechenden Enumerationswert der Eigenschaft LayoutMdi zu.


' Gemeinsamer Ereignishandler der Menüelemente zur überlappenden,
' horizontalen und vertikalen Anordnung der Subfenster
Private Sub ArrangeSubWindows(...) _
Handles mnuUntereinander.Click, _
mnuUeberlappend.Click, _
mnuNebeneinander.Click
If (sender Is mnuUeberlappend) Then
Me.LayoutMdi(MdiLayout.Cascade)
ElseIf (sender Is mnuUntereinander) Then
Me.LayoutMdi(MdiLayout.TileHorizontal)
Else
Me.LayoutMdi(MdiLayout.TileVertical)
End If
End Sub

Sie werden feststellen, dass sich die Anordnung der untergeordneten Fenster nicht blindlings an Ihren Wünschen orientiert, sondern als nicht beeinflussbaren Faktor auch die Anzahl der Subfenster berücksichtigt. Sind beispielsweise vier untergeordnete Fenster geöffnet und wird die Anweisung gegeben, alle horizontal anzuordnen, werden nicht alle vier Fenster untereinander angezeigt. Stattdessen werden je zwei Fenster neben- und untereinander ausgegeben. Die Anordnung entspricht genau der, die man auch bei vier Subfenstern erhalten würde, wenn eine vertikale Anordnung gewünscht wird.


Galileo Computing

21.5.2 Subfenster mit eigenen Menüs  toptop

Ein Subfenster kann genauso wie ein MDI-Hauptfenster eine eigene Menüleiste haben. Allerdings wird diese nicht im Sub-, sondern im Hauptfenster angezeigt. Dabei wird die Menü-leiste des Hauptfensters um die Menüleiste des Subfensters ergänzt. Die Anordnung der Menüelemente in der kombinierten Menüleiste kann unterschiedlich ausfallen, per Vorgabe wird die Menüleiste des Hauptfensters rechts um die Menüleiste des Subfensters ergänzt.

Die Standardeinstellung kann verändert werden, und das praktisch ohne Einschränkungen. Sie können die beiden Menüleisten beliebig kombinieren, Menüelemente ausblenden, Menüelemente im Hauptfenster durch Untermenüs des Subfensters ergänzen usw.

Um das Verhalten des Zusammenführens von zwei Menüleisten zu steuern, stehen Ihnen mit MergeAction und MergeIndex zwei Eigenschaften der Menüelemente zur Verfügung. Die Einstellungen dieser Eigenschaften wirken sich aber auch nur dann aus, wenn das MenuStrip-Objekt mit AllowMerge=True ein Zusammenführen zulässt. Das ist aber die Vorgabe und braucht daher nur umgeschaltet zu werden, wenn das Zusammenführen der Menüleisten nicht gewünscht ist.

MergeAction beschreibt, wie die beiden Menüleisten kombiniert werden. Dabei sind Einstellungen möglich, die in der gleichnamigen Enumeration festgelegt sind.


Tabelle 21.2     Die Mitglieder der Enumeration »MergeAction«

Wert Beschreibung
Append Das Menüelement wird der Menüleiste im Hauptfenster angehängt.
Insert Fügt ein Menüelement an der unter MergeIndex spezifizierten Position ein.
MatchOnly Das Untermenü des Menüelements wird an das Untermenü im Hauptfenster angehängt, dessen Position durch MergeIndex beschrieben wird.
Remove Das Menüelement ist in einem zusammengeführten Menü nicht enthalten.
Replace Das Menüelement ersetzt vollständig das unter MergeIndex angegebene des Hauptfensters.

MergeAction.Append hängt das Menüelement direkt hinter dem rechts außen stehenden Menüelement des Hauptfensters an. Sollten keine Änderungen an der Eigenschaft MergeAction der Subfenster-Menüelemente vorgenommen worden sein, wird die komplette Subfenster-Menüleiste auf diese Weise in die Menüleiste des Hauptfensters eingespielt.

Wollen Sie Einfluss auf die angezeigte Reihenfolge nehmen, könnte MergeAction.Insert die passende Wahl sein. Sie müssen allerdings dann auch unter der Eigenschaft MergeIndex die Position des Menüelements in der zusammengeführten Menüleiste angeben. Bedenken Sie, dass alle Menüelemente von einer Auflistung des MenuStrip-Objekts verwaltet werden. Geben Sie


MergeAction = Insert
MergeIndex = 1

an, wird das Menüelement als zweites im zusammengeführten Menü des Hauptfensters angezeigt.

Angenommen, im Hauptfenstermenü gibt es ein Menüelement Datei und im Subfenster ebenfalls. Die Intention, auch im Subfenster ein Datei-Menüelement bereitzustellen, könnte die Absicht sein, das des Hauptfensters zu ersetzen. Was ist zu tun? Nun, zuerst stellen Sie im Eigenschaftsfenster


MergeAction = Replace

ein und unter MergeIndex den Index des Elements in der Collection, das ersetzt werden soll. Da Datei meist links außen zu finden ist und damit auch die erste Position in der ToolStripItemCollection einnimmt, müsste


MergeIndex = 0

zum Ziel führen.

Im Subfenster ein Datei-Menüelement vorzusehen, könnte aber auch der Idee entspringen, das ursprüngliche Datei-Menü im Hauptfenster durch passende Einträge zu ergänzen, um den spezifischen Anforderungen des Subfensters zu genügen. Auch das ist kein Problem. Unter MergeIndex geben Sie den Index des Menüelements an, der ergänzt werden soll, und MergeAction legen Sie auf MatchOnly fest. Es ist übrigens nicht zwingend erforderlich, dass das zu ergänzende Menüelement denselben Bezeichner hat wie das Menüelement, dessen Unterelemente ergänzend zusammengeführt werden.


Hinweis

Auch wenn wir hier nur die Menüelemente der Menüleiste und deren Zusammenführen im Hauptfenster erörtert haben, Sie können auch die Unterelemente ganz nach Ihren Vorstellungen anordnen und kombinieren.


 <<   zurück
  
  Zum Katalog
Zum Katalog: Visual Basic 2005
Visual Basic 2005
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Visual C# 2005






 Visual C# 2005


Zum Katalog: Fortgeschrittene Programmierung mit Visual C# 2005






 Fortgeschrittene
 Programmierung
 mit Visual C# 2005


Zum Katalog: Das Programmierhandbuch SQL Server 2005






 Das Programmier-
 handbuch
 SQL Server 2005


Zum Katalog: Einstieg in Visual Basic 2005






 Einstieg in
 Visual Basic 2005


Zum Katalog: Einstieg in Visual C# 2005






 Einstieg in
 Visual C# 2005


Zum Katalog: Konzepte und Lösungen für Microsoft-Netzwerke






 Konzepte und
 Lösungen für
 Microsoft-Netzwerke


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo








Copyright © Galileo Press 2007
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de